#include <iostream>
#include <cstring>
using namespace std;

const int N=1e3+10;
const int MOD=1e9+7;

int f[N][N];
int g[N][N];

int main()
{
	int n,V;
	cin>>n>>V;
	g[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		int v,w;
		cin>>v>>w;
		for(int j=0;j<=V;j++)
		{
			f[i][j]=f[i-1][j];
			g[i][j]=g[i-1][j];
			if(j>=v)
			{
				int maxv=max(f[i][j],f[i-1][j-v]+w);
				int cnt=0;
				if(maxv==f[i-1][j-v]+w)
					g[i][j]+=g[i-1][j-v];
				f[i][j]=maxv;
			}
		}
	}
	cout<<f[n][V]<<endl;
	
	
	return 0;
}
